import request from '@/utils/request'

/**
 * 获取角色列表
 * @param {Object} params - 查询参数
 * @param {number} [params.skip=0] - 分页起始位置，从0开始
 * @param {number} [params.limit=10] - 每页记录数，最大100
 * @returns {Promise} - 返回角色列表数据
 */
export function getRoleList(params) {
  return request({
    url: '/dk/sysbase/roles',
    method: 'get',
    params,
  })
}

/**
 * 创建角色
 * @param {Object} data - 角色数据
 * @param {string} data.name - 角色名称
 * @param {string} data.description - 角色描述
 * @param {Array} data.permissions - 权限列表
 * @returns {Promise} - 返回创建结果
 */
export function createRole(data) {
  return request({
    url: '/dk/sysbase/roles',
    method: 'post',
    data,
  })
}

/**
 * 获取角色详情
 * @param {string} roleId - 角色ID
 * @returns {Promise} - 返回角色详情
 */
export function getRoleDetail(roleId) {
  return request({
    url: `/dk/sysbase/roles/${roleId}`,
    method: 'get',
  })
}

/**
 * 更新角色
 * @param {string} roleId - 角色ID
 * @param {Object} data - 角色数据
 * @param {string} data.name - 角色名称
 * @param {string} data.description - 角色描述
 * @param {Array} data.permissions - 权限列表
 * @returns {Promise} - 返回更新结果
 */
export function updateRole(roleId, data) {
  return request({
    url: `/dk/sysbase/roles/${roleId}`,
    method: 'put',
    data,
  })
}

/**
 * 删除角色
 * @param {string} roleId - 角色ID
 * @returns {Promise} - 返回删除结果
 */
export function deleteRole(roleId) {
  return request({
    url: `/dk/sysbase/roles/${roleId}`,
    method: 'delete',
  })
}

/**
 * 为用户分配角色
 * @param {string} userId - 用户ID
 * @param {Object} data - 角色数据
 * @param {string} data.role_id - 角色ID
 * @returns {Promise} - 返回分配结果
 */
export function assignRoleToUser(userId, data) {
  return request({
    url: `/dk/sysbase/users/${userId}/roles`,
    method: 'post',
    data,
  })
}

/**
 * 从用户中移除角色
 * @param {string} userId - 用户ID
 * @param {string} roleId - 角色ID
 * @returns {Promise} - 返回移除结果
 */
export function removeRoleFromUser(userId, roleId) {
  return request({
    url: `/dk/sysbase/users/${userId}/roles/${roleId}`,
    method: 'delete',
  })
}
